# file: habilidades.py
# -*- coding: utf-8 -*-

class Habilidades(object):
        '''Clase Habilidades'''
        def __init__(self):
                '''Constructor de la clase Habilidades'''
                self.descripcion=descripcion
                self.autor=autor
        def __str__(self):
                return "Nombre:"+str(self.nombre)+";  Descripción:"+str(self.descripcion)+";  Autor:"+str(self.autor)
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                return
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                return

class Absorber(Habilidades):
        '''Clase Absorber, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Absorber'''
                self.nombre="Absorber"
                Habilidades.descripcion="La criatura absorbe vida de la criatura oponente y regenera su hp con un porcentaje de la misma. Costo: 5mp"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=3
                Habilidades.diccionario_costos["carisma"]=5
                Habilidades.diccionario_costos["destreza"]=5
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_destino=destino.obtener_estado()
                origen_consec["mp"]=-3
                hp=(dic_destino["destreza"]+dic_destino["carisma"]-dic_destino["xp"]/2) #Valor de hp a quitarle a la criatura oponente
                destino_consec["hp"]=-hp
                origen_consec["hp"]=hp*0.5
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Absorber"

class Ahorcamiento(Habilidades):
        '''Clase Ahorcamiento, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Ahorcamiento'''                
                self.nombre="Ahorcamiento"
                Habilidades.descripcion="Quita hp a la criatura enemiga. La cantidad de hp a quitar esta relacionada con la fuerza y contextura de la criatura de origen"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["hp"]=3
                Habilidades.diccionario_costos["fuerza"]=6
                Habilidades.diccionario_costos["contextura"]=6
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                dic_destino=destino.obtener_estado()
                origen_consec["hp"]=-3
                destino_consec["hp"]=-((dic_origen["fuerza"]+dic_origen["contextura"]-dic_destino["destreza"])*2)
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Ahorcamiento"

class Cuerpo_a_Cuerpo(Habilidades):
        '''Clase Cuerpo a Cuerpo, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Cuerpo a Cuerpo'''
                
                self.nombre="Cuerpo a Cuerpo"
                Habilidades.descripcion="La criatura impacta con furia sobre la criatura oponente."
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["hp"]=1
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                origen_consec["hp"]=-1
                destino_consec["hp"]=-20
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Cuerpo a Cuerpo"

class Magia_vudu(Habilidades):
        '''Clase Magia vudu, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Magia vudu'''
                
                self.nombre="Magia vudu"
                Habilidades.descripcion="Quita mp a la criatura enemiga.La cantidad de mp a quitar estan relacionados con la sabiduria y la destreza de la criatura objetivo"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=3
                Habilidades.diccionario_costos["inteligencia"]=6
                Habilidades.diccionario_costos["sabiduria"]=5
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                dic_destino=destino.obtener_estado()
                origen_consec["mp"]=-3
                destino_consec["mp"]=-(dic_destino["sabiduria"]+dic_destino["destreza"]-dic_destino["xp"])
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Magia vudu"

class Punio_de_fuego(Habilidades):
        '''Clase Punio de fuego, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Punio de fuego'''
                
                self.nombre="Punio de fuego"
                Habilidades.descripcion="Quita hp a la criatura enemiga. La cantidad de hp a quitar esta relacionado con la fuerza de la criatura de origen"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=2
                Habilidades.diccionario_costos["fuerza"]=6
                Habilidades.diccionario_costos["contextura"]=6
                Habilidades.diccionario_costos["inteligencia"]=4
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                origen_consec["mp"]=-2
                destino_consec["hp"]=-((dic_origen["fuerza"]+dic_origen["xp"])*2)
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Punio de fuego"

class Banio_de_sangre(Habilidades):
        '''Clase Baño de sangre, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Baño de sangre'''
                
                self.nombre="Banio de sangre"
                Habilidades.descripcion="Quita hp a la criatura enemiga. La cantidad de hp a quitar esta relacionado con la fuerza de la criatura de origen"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=3
                Habilidades.diccionario_costos["fuerza"]=5
                Habilidades.diccionario_costos["contextura"]=6
                Habilidades.diccionario_costos["inteligencia"]=5
                Habilidades.diccionario_costos["sabiduria"]=6
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                origen_consec["mp"]=-3
                destino_consec["hp"]=-((dic_origen["fuerza"]+dic_origen["xp"])+15)
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Banio de sangre"

class Golpe_relampago(Habilidades):
        '''Clase Golpe relampago, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Golpe relampago'''
                
                self.nombre="Golpe relampago"
                Habilidades.descripcion="Quita hp a la criatura enemiga.La cantidad de mp a quitar estan relacionados con la fuerza y la destreza de la criatura objetivo"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=2
                Habilidades.diccionario_costos["destreza"]=5
                Habilidades.diccionario_costos["inteligencia"]=6
                Habilidades.diccionario_costos["sabiduria"]=7
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                dic_destino=destino.obtener_estado()
                origen_consec["mp"]=-2
                destino_consec["hp"]=-((dic_destino["fuerza"]+dic_destino["destreza"])*2)
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Golpe relampago"

class Destello_magico(Habilidades):
        '''Clase Destello magico, una Habilidad'''
        def __init__(self):
                '''Constructor de la clase Destello magico'''
                
                self.nombre="Destello magico"
                Habilidades.descripcion="Quita hp a la criatura enemiga.La cantidad de mp a quitar estan relacionados con la sabiduria de la criatura origen"
                Habilidades.autor="Pilla-Sanchez"
        def obtener_costos(self):
                '''Devuelve un diccionario con los costos de la habilidad'''
                Habilidades.diccionario_costos={}
                Habilidades.diccionario_costos["mp"]=3
                Habilidades.diccionario_costos["inteligencia"]=6
                Habilidades.diccionario_costos["sabiduria"]=6
                return Habilidades.diccionario_costos
        def obtener_consecuencias(self,origen,destino):
                '''Devuelve dos diccionarios con las consecuencias de la habilidad'''
                origen_consec={}
                destino_consec={}
                dic_origen=origen.obtener_estado()
                dic_destino=destino.obtener_estado()
                origen_consec["mp"]=-3
                destino_consec["hp"]=-(dic_origen["sabiduria"]*2+10)
                return origen_consec,destino_consec
        def nombre_habilidad(self):
                '''Devuelve el nombre de la habilidad'''
                return "Destello magico"





